/**
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * $Id$ VendorServices.java
 * Universidad de los Andes (Bogotá - Colombia)
 * Departamento de Ingeniería de Sistemas y Computación
 * Licenciado bajo el esquema Academic Free License version 2.1
 *
 * Ejercicio: Muebles los Alpes
 * Autor: Camilo Alvarez
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 */
package com.losalpes.catalogo.servicios;

import com.losalpes.catalogo.entities.Vendedor;
import com.losalpes.catalogo.excepciones.InvalidOperationException;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateful;

/**
 * Implementación de los servicios para vendedor que se le presnta al catalogo.
 * @author Camilo Alvarez
 */
@Stateful
public class VendorServices implements IVendorServicesLocal{

    // -----------------------------------------------
    // Atributos
    // -----------------------------------------------

    /**
     * Relación con los servicios de persistencia del sistema.
     */
    @EJB
    private IPersistenceServices persistenceServices;

    /**
     * Contiene la información del vendedor actual
     */
    private Vendedor cVendedor;

    // -----------------------------------------------
    // Constructor
    // -----------------------------------------------

    /**
     * Constructor por defecto de la clase.
     */
    public VendorServices() {
    }

    // -----------------------------------------------
    // Métodos
    // -----------------------------------------------

    /**
     * Crea una nueva instancia de Vendedor y la retorna.
     * @return vendedor. Nueva instancia de vendedor.
     */
    public Vendedor newVendedor() {
        cVendedor = new Vendedor();
        return cVendedor;
    }

    /**
     * Modifica un vendedor dentro de la persistencia del sistema.
     * @return vendedor. Objeto modificado de la instancia de vendedor que se modifico.
     */
    public Vendedor createOrUpdate() {
        if (cVendedor.getIdentificacion() == null) {
            try {
                persistenceServices.create(cVendedor);
            } catch (InvalidOperationException ex) {
            }
        } else {
            persistenceServices.update(cVendedor);
        }
        return cVendedor;
    }

	/**
     * Retorna la lista de todos los vendedores registrados en el sistema.
     * @return list. Lista de todos los vendedores registrados en el sistema.
     */
    public List<Vendedor> findAll() {
        return persistenceServices.findAll(Vendedor.class);
    }

    /**
     * Retorna un vendedor dada su identificación.
     * @param id. Identificador único del vendedor.
     * @return vendedor. Vendedor cuyo identificador corresponde con el parametro.
     */
    public Vendedor findByIdentificacion(String id) {
        return (Vendedor)persistenceServices.findById(Vendedor.class,id);
    }

    /**
     * Permite eliminar un vendedor de la persistencia del sistema.
     */
    public void delete() {
        try {
            persistenceServices.delete(cVendedor);
        } catch (InvalidOperationException ex) {
        }
    }

    /**
     * Retorna el vendedor actual.
     * @return vendedor. Vendedor actual.
     */
    public Vendedor getVendedor() {
        return cVendedor;
    }

    /**
     * Permite asignar el vendedor actual.
     * @param id. Identificador de nuevo cendedor actual.
     * @return vendedor. Nuevo vendedor actual.
     */
    public void setVendedor(Vendedor vendedor) {
        cVendedor=vendedor;
    }
}